package com.shuai.AI.ai_app.chatmemory;

import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.UserMessage;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class SerializableMessage {
  // 存储Message的核心属性：内容、类型（user/assistant）、元数据（可选）
  private String content;
  private String messageType; // 对应Message的具体类型，如"USER"、"ASSISTANT"
  private Map<String, Object> metadata;

  // 从Message转换为SerializableMessage（完善属性赋值）
  public static SerializableMessage fromMessage(Message message) {
    SerializableMessage serializableMessage = new SerializableMessage();
    serializableMessage.setContent(message.getText());
    // 区分Message类型（需根据Spring AI的Message实现调整，如UserMessage/AssistantMessage）
    if (message instanceof UserMessage) {
      serializableMessage.setMessageType("USER");
    } else if (message instanceof AssistantMessage) {
      serializableMessage.setMessageType("ASSISTANT");
    }
    serializableMessage.setMetadata(message.getMetadata()); // 存储元数据（如对话ID、时间等）
    return serializableMessage;
  }

  // 从SerializableMessage还原为Message（完整属性）
  public Message toMessage(String messageType) {

    switch (messageType) {
      case "USER":
        return new UserMessage(content);
      case "ASSISTANT":
        return new AssistantMessage(content, metadata);
      default:
        throw new IllegalArgumentException("未知的消息类型：" + messageType);
    }
  }

  // getter/setter省略
}
